package com.zsp.test.Graph;

import java.util.*;

public class UseFriend {
    public static void main(String[] args) {
        FriendRecommendation fr = new FriendRecommendation();

        // 添加好友关系
        fr.addEdge(1, 2);
        fr.addEdge(1, 3);
        fr.addEdge(2, 3);
        fr.addEdge(3, 4);
        fr.addEdge(4, 1);

        // 添加用户的个人资料
        fr.addUserProfile(1, new UserProfile("北京", "海淀学校", createSet("音乐", "游戏"), createSet("群组1")));
        fr.addUserProfile(2, new UserProfile("北京", "朝阳学校", createSet("音乐", "阅读"), createSet("群组2")));
        fr.addUserProfile(3, new UserProfile("上海", "海淀学校", createSet("运动", "做饭"), createSet("群组1", "群组3")));
        fr.addUserProfile(4, new UserProfile("北京", "海淀学校", createSet("音乐", "游戏"), createSet("群组2")));

        // 计算每个用户的PageRank值
        fr.calculatePageRank();

        // 根据PageRank值和相似度推荐好友
        List<Integer> recommendations = fr.recommendFriends(1);
        System.out.println("用户1可能认识的人: " + recommendations);
    }

    // 创建不可变集合
    private static Set<String> createSet(String... elements) {
        return Collections.unmodifiableSet(new HashSet<>(Arrays.asList(elements)));
    }
}
